<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
  <title>{{= d.nick }}的Dice WebUI</title>
  <link rel="stylesheet" href="css/layui.css">
  <link rel="stylesheet" href="css/soulTable.css">
  <style>
	  .layui-layout-admin .layui-layout-left,
	  .layui-layout-admin .layui-body,
	  .layui-layout-admin .layui-footer{left: 0;}
	  .layui-layout-admin .layui-side{left: -300px;}
	  .layui-table-cell{
		height: 26px;
		white-space: nowrap;
		line-height: 26px;
		padding: 0 10px;
	  }
	  .layui-btn-container .layui-btn {
		margin-bottom: 1px;
		margin-left: 1px;
	  }
      .layui-form-switch {
          height: 22px;
      }
  </style>
</head>
<body>

<div class="layui-layout layui-layout-admin">
  <div class="layui-header">
	<div class="layui-logo layui-hide-xs layui-bg-black">Dice WebUI</div>
	<ul class="layui-nav layui-layout-right">
	  <li class="layui-nav-item layui-hide" id="bot-info">
		<a href="javascript:;">
		  <img src="https://q1.qlogo.cn/g?b=qq&nk={{= d.qq }}&s=3" class="layui-nav-img" id="qq-avatar">
		  <span>{{= d.nick }}</span>
		</a>
	  </li>
	</ul>
  </div>

  <div class="layui-body" style="padding: 15px;">
	<div class="layui-tab layui-tab-brief" lay-filter="main">
	  <ul class="layui-tab-title">
		<li class="layui-this" style="width: 12%">主界面</li>
		<li style="width: 12%">Master设置</li>
		<li class="layui-hide">用户管理(还没写)</li>
		<li class="layui-hide">群管理(还没写)</li>
		<li style="width: 12%">自定义回执</li>
		<li style="width: 12%">关键词回复</li>
		<li style="width: 12%">模块管理</li>
		<li style="width: 12%">WebUI管理</li>
		<li style="width: 12%">更新日志</li>
	  </ul>
	  <div class="layui-tab-content">
		<div class="layui-tab-item layui-show">
		  <div class="layui-row layui-col-space15">
			<div class="layui-col-md6">
			  <div class="layui-panel" style="padding: 10px;">
				<div class="layui-text">
				  <h3>基础信息</h3>
				  <p>
					欢迎使用Dice! WebUI面板
					<br>
					常用链接：<a href="https://forum.kokona.tech">论坛</a> <a href="https://v2docs.kokona.tech">文档</a>
					<br>
					<span id="basic-info">运行时间：{{= d.running_time }}
					<br>
					启动后指令数量：{{= d.cmd_count }}
					<br>
					今日指令数量：{{= d.cmd_count_today }}</span>
					<br>
				  </p>
				</div>
			  </div>   
			</div>
			<div class="layui-col-md6">
			  <div class="layui-panel layui-hide" style="padding: 10px;">
				<div class="layui-text">
				  <h3>系统信息</h3>
				  <p>
					 还没写还没写还没写 
				  </p>
				</div>
			  </div>   
			</div>
		  </div>    
		</div>
		<div class="layui-tab-item">
		  <form class="layui-form" action="">
			  <div class="layui-form-item">
				  <label class="layui-form-label">Master</label>
				  <div class="layui-input-inline">
					  <input type="number" name="master" id="master" required lay-verify="required|number" placeholder="输入骰主账号完成认主" autocomplete="off" class="layui-input">
				  </div>
				  <div class="layui-input-inline" id="mastermode">
					  <input type="radio" name="mode" id="public" value="public" title="公骰" checked>
					  <input type="radio" name="mode" id="private" value="private" title="私骰">
				  </div>
				  <div class="layui-input-inline">
					  <button class="layui-btn layui-btn-warm" lay-submit lay-filter="masterForm">认主</button>
				  </div>
			  </div>
		  </form>
		  <table id="admin-config-table" lay-filter="admin-config-table"></table>
		</div>
		<div class="layui-tab-item">

		</div>
		<div class="layui-tab-item">

		</div>
		<div class="layui-tab-item">
		  <table id="custom-msg-table" lay-filter="custom-msg-table"></table>
		</div>
		<div class="layui-tab-item">
		  <table id="custom-reply-table" lay-filter="custom-reply-table"></table>
		</div>
		<div class="layui-tab-item">
			<div class="layui-tab layui-tab-brief" lay-filter="mod-tab">
				<ul class="layui-tab-title">
				  <li class="layui-this" style="width: 45%">本地列表</li>
				  <li style="width: 45%">远程资源</li>
				</ul>
				<div class="layui-tab-content">
				  <div class="layui-tab-item layui-show">
					<table id="mod-local-table" lay-filter="mod-local-table"></table>
				  </div>
				  <div class="layui-tab-item">
					<div class="layui-form-item">
						<label class="layui-form-label" style="width: 50px">远程库</label>
						<div class="layui-input-inline" style="width: 70%">
							<input name="url" id="mod-source-url" value="https://raw.gitmirror.com/Dice-Developer-Team/DiceModIndex/main/index" autocomplete="on" class="layui-input">
						</div>
						<button class="layui-btn layui-btn-warm" lay-submit lay-filter="mod-source-get">访问资源</button>
					</div>
					<table id="mod-source-table" lay-filter="mod-source-table"></table>
				  </div>
				</div>
			</div>
		</div>
		<div class="layui-tab-item">
		  <form class="layui-form" action="">
			<div class="layui-form-item">
			  <label class="layui-form-label">WebUI密码</label>
			  <div class="layui-input-block">
				<input type="password" name="password" id="password" required lay-verify="required|pass" placeholder="请输入新密码" autocomplete="off" class="layui-input">
				<input type="password" required lay-verify="required|passsame" placeholder="请重复输入新密码" autocomplete="off" class="layui-input">
			  </div>
			</div>
			<div class="layui-form-item">
			  <div class="layui-input-block">
				<button class="layui-btn" lay-submit lay-filter="passwordForm">确认</button>
			  </div>
			</div>
		  </form>
		</div>
		<div class="layui-tab-item">
			<ul class="layui-timeline">
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe604;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">最新版本开发中</h3>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2025年4月13日 版本2.7.0rc(666)</h3>
						<p>webui依赖本地化</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2025年8月25日 版本2.7.0beta9(665)</h3>
						<p>变更内部字符编码为utf8</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2024年7月10日 版本2.7.0beta8(664)</h3>
						<p>重做ruleset优先对game生效</p>
						<p>支持pl将自身私聊窗口加入game</p>
						<p>新增监听事件接收warning</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2024年5月1日 版本2.7.0beta8(662)</h3>
						<p>新增ri批量生成</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2024年4月25日 版本2.7.0beta8(661)</h3>
						<p>优化game指令触发机制(允许auto_join)</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2024年3月23日 版本2.7.0beta8(660)</h3>
						<p>优化sample嵌套</p>
						<p>支持game获取log_name、log_file</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2024年3月14日 版本2.7.0beta8(659)</h3>
						<p>支持reply在冷却中或达到当日上限时另设回复词</p>
						<p>优化Game指令的触发条件</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2024年3月2日 版本2.7.0beta7(658)</h3>
						<p>重写.dnd展示</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2024年3月1日 版本2.7.0beta7(657)</h3>
						<p>角色卡模板支持别名</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2024年2月17日 版本2.7.0beta7(656)</h3>
						<p>重构转义机制</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2024年2月12日 版本2.7.0beta6(655)</h3>
						<p>支持角色卡模板以script标签内嵌脚本</p>
						<p>支持角色卡模板以trigger标签内嵌属性写入事件触发器</p>
						<p>优化.st指令回执</p>
						<p>扩展角色卡位至32</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2023年10月11日 版本2.7.0beta5(654)</h3>
						<p>重做角色卡模板</p>
						<p>支持以JavaScript定义角色卡预设属性</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2023年5月30日 版本2.7.0beta5(653)</h3>
						<p>新增: game卡带</p>
						<p>修复: GM权限可以任意获取的bug</p>
						<p>优化: python同一脚本将编译后复用</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2023年5月27日 版本2.7.0beta5(652)</h3>
						<p>新增: .game new/over/open/close/state 支持调整游戏对应窗口</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2023年5月25日 版本2.7.0beta4(651)</h3>
						<p>新增: 轮盘骰机制</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2023年5月25日 版本2.7.0beta4(650)</h3>
						<p>新增: 规则集专属指令</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2023年5月25日 版本2.7.0beta4(649)</h3>
						<p>新增: .game master/set/call/join/kick/exit</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2023年5月20日 版本2.7.0beta4(648)</h3>
						<p>新增: 角色卡支持锁卡</p>
						<p>新增: js/py自定义GameTable类</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2023年5月13日 版本2.7.0beta3(647)</h3>
						<p>新增: .rules支持自定义规则集</p>
						<p>新增: lua自定义GameTable类</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2023年4月25日 版本2.7.0beta2(646)</h3>
						<p>新增: lua/js自定义集合Set类</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2023年4月23日 版本2.7.0beta(645)</h3>
						<p>优化: .sc回执更新strSanRollRes->strSanityRoll</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2023年4月21日 版本2.7.0alpha6(644)</h3>
						<p>新增: st show跨卡查看属性</p>
						<p>新增: Actor.rollDice</p>
						<p>新增: getPlayerCard按角色名取卡</p>
						<p>优化: jrrp不再限制类型为int</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2023年4月12日 版本2.7.0alpha5(643)</h3>
						<p>新增: rc支持跨角色调用</p>
						<p>修复: 取今日数据不再永远返回true</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2023年4月2日 版本2.7.0alpha4(642)</h3>
						<p>新增: 使用[.helpdoc 词条名]时将返回未转义的原内容</p>
						<p>新增: getUserItem支持以danger字段获取黑名单危险等级</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2023年3月20日 版本2.7.0alpha3(641)</h3>
						<p>新增: SelfData支持yaml</p>
						<p>新增: log函数支持保存在特定文件名</p>
						<p>优化: 修改掷骰上限为999枚，9999面</p>
						<p>修复: at全体成员不再触发召唤词</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2023年2月24日 版本2.7.0alpha2(640)</h3>
						<p>新增: 支持JavaScript</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2022年12月29日 版本2.7.0alpha(639)</h3>
						<p>新增: 支持Python</p>
						<p>新增: webui远程获取模块资源</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe617;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2022年12月15日 版本2.6.6rc(638)</h3>
						<p>新增: webui模块调序</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2022年12月12日 版本2.6.6beta3(637)</h3>
						<p>新增: webui远程获取模块资源</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2022年12月11日 版本2.6.6beta2(636)</h3>
						<p>新增: toml读写</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2022年12月10日 版本2.6.6beta(635)</h3>
						<p>优化: webui可定制化</p>
						<p>修复: 无法远程更新dev版本</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2022年12月6日 版本2.6.6alpha(634)</h3>
						<p>优化转义解析顺序，新增var赋值变量</p>
						<p>为send定向发送添加转义</p>
						<p>修复使用rc附带奖惩骰时无法正常调取角色卡属性的bug</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe617;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2022年11月27日 版本2.6.5fix2(633)</h3>
						<p>修复删除reply时不会清除对应完全匹配触发词的问题</p>
						<p>优化system load时对selfdata的行为（清空重读）</p>
						<p>st录入文本不再限定条目</p>
						<p>修复.rc与.r的角色卡调用bug</p>
						<p>修复system load时plugin中指令不会清空的问题</p>
						<p>新增wait</p>
						<p>修复先攻表为空时ri录入失败的bug</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2022年11月20日 版本2.6.5fix1(632)</h3>
						<p>新增ran</p>
						<p>修复log上传一次失败无限循环的bug</p>
						<p>将召唤词与at等效</p>
						<p>为context.index的参数插入转义</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2022年11月17日 版本2.6.5rc3(631)</h3>
						<p>WebUI增加mod页</p>
						<p>优化help模糊推荐</p>
						<p>修复在错误时点刷新每日的bug</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2022年11月10日 版本2.6.5rc2(630)</h3>
						<p>修复骰娘认主口令生成错误的问题；修改初始化时发送口令机制:无console配置->无主</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2022年10月29日 版本2.6.5rc(629)</h3>
						<p>恢复cloud update远程更新</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2022年10月24日 版本2.6.5beta14(628)</h3>
						<p>支持mod update更新/reinstall重装</p>
						<p>http.post参数3重写为请求头header</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2022年10月4日 版本2.6.5beta14(627)</h3>
						<p>更新认主口令</p>
						<p>支持mod reload重载</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2022年9月28日 版本2.6.5beta13(626)</h3>
						<p>reply前缀匹配记录余项msg.suffix</p>
						<p>支持获取user.gender</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2022年9月27日 版本2.6.5beta13(625)</h3>
						<p>支持welcome有限转义</p>
						<p>添加对{nick}的敏感词检测</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2022年9月19日 版本2.6.5beta12(624)</h3>
						<p>支持mod get安装/info信息/detail详细信息</p>
						<p>支持mod delete卸载</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2022年9月17日 版本2.6.5beta11(623)</h3>
						<p>优化mod on/off热插拔</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2022年9月9日 版本2.6.5beta10(622)</h3>
						<p>支持TimeZoneLag项手动调整时差</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2022年9月8日 版本2.6.5beta9(621)</h3>
						<p>扩展代理事件及ex接口</p>
						<p>json等数据结构采用fifo特性</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2022年8月19日 版本2.6.5beta8(620)</h3>
						<p>留档每日数据至/user/daily/</p>
						<p>修复DefaultCOCRoomRule不生效的bug</p>
						<p>支持msg:echo参数2可选是否转义</p>
						<p>取members支持参数3指定获取权限/名片/最后消息列表</p>
						<p>新增代理事件DayEnd、DayNew</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2022年8月19日 版本2.6.5beta7(619)</h3>
						<p>合并msg_order与reply的order，时点先于内置指令</p>
						<p>支持msg:format</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2022年8月18日 版本2.6.5beta5(617)</h3>
						<p>转义支持grade分档输出</p>
						<p>转义支持master配置项</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2022年8月10日 版本2.6.5beta4(616)</h3>
						<p>优化转义，支持case条件输出</p>
						<p>优化log on/new 直接切换日志文件</p>
						<p>mod支持子目录image,audio</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2022年8月10日 版本2.6.5beta3(615)</h3>
						<p>getGroupConf允许取群成员/群管理列表</p>
						<p>新增SelfData类，在内存中读写自定义数据</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2022年8月8日 版本2.6.5beta2(614)</h3>
						<p>reply limit新增lock项</p>
						<p>支持reply页echo项直接存入lua函数</p>
						<p>修复匿名log的文件名错误</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2022年7月3日 版本2.6.5beta(613)</h3>
						<p>getUserConf/getGroupConf新增遍历记录中指定属性的特性</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe617;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2022年6月6日 版本2.6.4rc(612)</h3>
						<p>session问题优化&新增link state</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2022年5月26日 版本2.6.4(612)</h3>
						<p>event支持hook代理事件</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2022年5月26日 版本2.6.4(612)</h3>
						<p>event支持hook代理事件</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2022年5月25日 版本2.6.4beta5(611)</h3>
						<p>WebUI更新自定义回执跨行编辑&reply匹配一对多</p>
						<p>优化session代码</p>
						<p>尝试修复与lua虚拟机的编码转换</p>
						<p>修复清群与log的一些问题</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2022年5月10日 版本2.6.4beta4(610)</h3>
						<p>event支持每日定时事件</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2022年5月2日 版本2.6.4beta3(609)</h3>
						<p>mod新增子目录event,支持计时循环事件</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2022年4月27日 版本2.6.4beta2(608)</h3>
						<p>新增.mod指令以在运行中插拔</p>
						<p>支持用setUserConf修改nn称呼</p>
						<p>更新认主机制，公骰作成允许任何人好友申请</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2022年4月26日 版本2.6.4beta1(607)</h3>
						<p>更新.nn指令格式</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe617;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2022年2月23日 版本2.6.3(606)</h3>
						<p>修复.sc使用给定理智值时，剩余理智存入角色卡的bug</p>
						<p>优化关键词回复的解析</p>
						<p>http.post支持定义contentType</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2022年2月19日 版本2.6.3beta6(605)</h3>
						<p>关键词回复优化为一个回复对应多个关键词</p>
						<p>修复敏感词检测时点</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2022年2月6日 版本2.6.3beta5(604)</h3>
						<p>优化转义机制，允许花括号多层嵌套</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2022年2月2日 版本2.6.3beta4(603)</h3>
						<p>支持yaml读取</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2022年1月26日 版本2.6.3beta3(602)</h3>
						<p>msg支持元表，允许msg:echo方法</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2022年1月25日 版本2.6.3beta2(601)</h3>
						<p>新增DisableStrangerChat禁用非好友私聊</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2022年1月21日 版本2.6.3beta1(600)</h3>
						<p>
							优化回复转义
						</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe617;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2022年1月19日 版本2.6.2fixed(599)</h3>
						<p>
							修复从文件读取的前缀匹配回复无法正常匹配的问题
						</p>
						<p>
							mod新增script项，允许被reply lua直接调用
						</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2022年1月16日 版本2.6.2(598)</h3>
						<p>
							新增当日计数器
						</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2022年1月13日 版本2.6.2(597)</h3>
						<p>
							新增冷却计时器
						</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2022年1月12日 版本2.6.2beta4(596)</h3>
						<p>
							PlayerCard/UserConf/GroupConf支持读写table
						</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2022年1月8日 版本2.6.2beta3(595)</h3>
						<p>
							lua可通过getGroupConf获取群名片card/权限auth/最后发言lst
						</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2022年1月5日 版本2.6.2beta2(594)</h3>
						<p>
							setcoc优化，允许查看房规
							<br>
							修复房规设置错误
						</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2022年1月3日 版本2.6.2beta1(593)</h3>
						<p>
							新增回复触发限制
						</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe617;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2021年12月17日 版本2.6.1(592)</h3>
						<p>
							新增回复前缀匹配
						</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2021年12月12日 版本2.6.1beta4(591)</h3>
						<p>
							新增获取群内nn/群名片/设置群名片
						</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2021年12月6日 版本2.6.1beta3(590)</h3>
						<p>
							lua内置http相关函数（get/post）
						</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2021年11月27日 版本2.6.1beta2(589)</h3>
						<p>
							新增安科/安价指令.ak
						</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2021年11月17日 版本2.6.1beta1(588)</h3>
						<p>
							适配频道消息
						</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe617;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2021年11月3日 版本2.6.0(587)</h3>
						<p>
							更新ww指令机制
						</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2021年10月1日 版本2.6.0(586)</h3>
						<p>
							新版触发词回复
						</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2021年9月18日 版本2.6.0(585)</h3>
						<p>
							WebUI 验证增强
						</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2021年9月17日 版本2.6.0beta(584)</h3>
						<p>
							WebUI 验证
							<br>
							WebUI 基础设置
							<br>
							WebUI 关键词回复管理
							<br>
							WebUI 正则回复管理
						</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
					<div class="layui-timeline-content layui-text">
						<h3 class="layui-timeline-title">2021年9月16日 版本2.6.0beta(583)</h3>
						<p>
							基础WebUI框架
							<br>
							WebUI 基础信息
							<br>
							WebUI Master设置
							<br>
							WebUI 自定义内置回执
						</p>
					</div>
				</li>
				<li class="layui-timeline-item">
					<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
					<div class="layui-timeline-content layui-text">
						<div class="layui-timeline-title">过去</div>
					</div>
				</li>
			</ul>
		</div>
	  </div>
	</div>
	<blockquote class="layui-elem-quote layui-hide layui-text" id="footer">当前版本：{{= d.version }}</blockquote>
  </div>
</div>

<script type="text/html" id="editToolbar">
  <div class="layui-btn-container">
	<button class="layui-btn layui-btn-xs layui-btn-normal" lay-event="edit">编辑</button>
  </div>
</script>

<script type="text/html" id="delToolbar">
  <div class="layui-btn-container">
	<button class="layui-btn layui-btn-xs layui-btn-danger" lay-event="delete">删除</button>
  </div>
</script>

<script type="text/html" id="addToolbar">
  <div class="layui-btn-container">
	<button class="layui-btn layui-btn-sm" lay-event="add">添加</button>
  </div>
</script>


<form class="layui-form layui-hide" id="editCustomMsgForm" action="" style="padding: 10px;">
  <div class="layui-form-item">
	<label class="layui-form-label" style="width: 40px">条目</label>
	<div class="layui-input-block" style="margin-left: 70px">
	  <input type="text" name="name" required lay-verify="required" placeholder="回执条目" autocomplete="off" class="layui-input">
	</div>
  </div>
  <div class="layui-form-item">
	<label class="layui-form-label" style="width: 40px">文本</label>
	<div class="layui-input-block" style="margin-left: 70px">
	  <!-- TODO: Multiline -->
	  <textarea type="text" name="value" placeholder="发送时显示的文本内容" autocomplete="on" class="layui-textarea"></textarea>
	</div>
  </div>
  <div class="layui-form-item">
	<label class="layui-form-label" style="width: 40px">说明</label>
	<div class="layui-input-block" style="margin-left: 70px">
	  <textarea type="text" name="remark" placeholder="略" autocomplete="off" class="layui-textarea"></textarea>
	</div>
  </div>
  <div class="layui-form-item">
	<div class="layui-input-block">
	  <button class="layui-btn" lay-submit lay-filter="editCustomMsgForm">编辑</button>
	</div>
  </div>
</form>

<form class="layui-form layui-hide" id="addCustomReplyForm" action="" style="padding: 10px;">
  <div class="layui-form-item">
	<label class="layui-form-label" style="width: 50px">名称</label>
	<div class="layui-input-block" style="margin-left: 80px">
	  <input type="text" name="name" required lay-verify="required" placeholder="条目唯一标识ID" autocomplete="off" class="layui-input">
	</div>
  </div>
  <div class="layui-form-item">
	<label class="layui-form-label" style="width: 50px">关键词</label>
	<div class="layui-input-block" style="margin-left: 80px">
	  <input type="text" name="keyword" required lay-verify="required" placeholder="多关键词用|分隔" autocomplete="off" class="layui-input">
	</div>
  </div>
  <div class="layui-form-item">
	<label class="layui-form-label" style="width: 60px">触发性质</label>
	<div class="layui-input-block" style="margin-left: 90px">
	<select name="type">
	  <option value="Reply">回复</option>
	  <option value="Order">指令</option>
	</select>
	</div>
  </div>
  <div class="layui-form-item">
	<label class="layui-form-label" style="width: 60px">匹配模式</label>
	<div class="layui-input-block" style="margin-left: 90px">
	<select name="mode">
	  <option value="Match">完全</option>
	  <option value="Search">模糊</option>
	  <option value="Prefix">前缀</option>
	  <option value="Regex">正则</option>
	</select>
	</div>
  </div>
  <div class="layui-form-item">
	<label class="layui-form-label" style="width: 60px">触发限制</label>
	<div class="layui-input-block" style="margin-left: 90px">
	  <!-- TODO: Multiline -->
	  <textarea type="text" name="limit" placeholder="默认为空" autocomplete="off" class="layui-textarea"></textarea>
	</div>
  </div>
  <div class="layui-form-item">
	<label class="layui-form-label" style="width: 60px">回复形式</label>
	<div class="layui-input-block" style="margin-left: 90px">
		<select name="echo">
			<option value="Deck">牌堆</option>
			<option value="Text">文本</option>
			<option value="Lua">Lua</option>
			<option value="JS">JavaScript</option>
			<option value="Py">Python</option>
		</select>
	</div>
  </div>
  <div class="layui-form-item">
	<label class="layui-form-label" style="width: 50px">回复内容</label>
	<div class="layui-input-block" style="margin-left: 80px">
	  <!-- TODO: Multiline -->
	  <textarea type="text" name="answer" required lay-verify="required" placeholder="请输入内容，牌堆形式以|分隔" autocomplete="off" class="layui-textarea"></textarea>
	</div>
  </div>
  <div class="layui-form-item">
	<div class="layui-input-block">
	  <button class="layui-btn" lay-submit lay-filter="addCustomReplyForm">添加</button>
	</div>
  </div>
</form>
  
<script src="layui.js"></script>
<script src="js/soulTable.slim.js"></script>
<script> 
//加载模块 
layui.use(['form', 'table', 'soulTable'], function(){ //亦可加载特定模块：layui.use(['layer', 'laydate', function(){
  //得到各种内置组件
  var layer = layui.layer //弹层
  ,laypage = layui.laypage //分页
  ,laydate = layui.laydate //日期
  ,table = layui.table //表格
  ,soulTable = layui.soulTable//表格
  ,carousel = layui.carousel //轮播
  ,upload = layui.upload //上传
  ,element = layui.element //元素操作
  ,slider = layui.slider //滑块
  ,dropdown = layui.dropdown //下拉菜单
  ,form = layui.form
  ,$ = layui.$


  $.get("/api/basicinfo")
	.done(function(data) {
	  if (data.code == 0) {
		var titleTpl = lay('title')[0].innerHTML;
		lay('title').html(layui.laytpl(titleTpl).render(data.data));

		var footerTpl = lay('#footer')[0].innerHTML;
		lay('#footer').html(layui.laytpl(footerTpl).render(data.data))
		.removeClass('layui-hide');

		var botInfoTpl = lay('#bot-info')[0].innerHTML;
		lay('#bot-info').html(layui.laytpl(botInfoTpl).render(data.data))
		.removeClass('layui-hide');

		var basicInfoTpl = lay('#basic-info')[0].innerHTML;
		lay('#basic-info').html(layui.laytpl(basicInfoTpl).render(data.data))
		.removeClass('layui-hide');

	  } else {
		layer.msg("连接到Dice!后端失败: " + data.msg);
	  }
	})
	.fail(function(jqXHR, textStatus, error) {
	  layer.msg("连接到Dice!后端失败: " + error);
	})

  //CustomMsg
  table.render({
	elem: '#custom-msg-table'
	,height: 420
	//,width: 'full-20'
	,url: '/api/custommsg' //数据接口
	,title: '自定义回执'
	,toolbar: "#addToolbar"
	,request: {} 
	, overflow: 'tips'
	,cols: [[ //表头
	  {field: 'name', title: '条目', width:150, sort: true, fixed: 'left'}
	  ,{field: 'value', title: '文本', minWidth:250, edit: 'text'}
	  ,{field: 'remark', title: '说明', width:250, fixed: 'right'}
	  ,{fixed: 'right', width:60, align:'center', toolbar: '#editToolbar'}
	  ,{fixed: 'right', width:60, align:'center', toolbar: '#delToolbar'}
	]]
    , done: function () {
        soulTable.render(this)
    }
  });

  var editCustomMsgFormIndex = -1;
  table.on('toolbar(custom-msg-table)', function(obj){
	var checkStatus = table.checkStatus(obj.config.id);
	switch(obj.event){
	  case 'add':
		editCustomMsgFormIndex = layer.open({
		  type: 1, 
		  title: '编辑自定义回执',
		  content: $("#editCustomMsgForm").removeClass("layui-hide"), //这里content是一个普通的String
		  end: function() { $("#editCustomMsgForm").addClass("layui-hide"); }
		});
		break;
	}
  });

  form.on('submit(editCustomMsgForm)', function(data){
	layer.close(editCustomMsgFormIndex);
	$.post("/api/custommsg", JSON.stringify({action: "set", data: [data.field]}))
	.done(function(data) {
	  if (data.code == 0) {
		layer.msg("自定义回执编辑成功");
		table.reload('custom-msg-table');
	  } else {
		layer.msg("自定义回执保存失败: " + data.msg);
	  }
	})
	.fail(function(jqXHR, textStatus, error) {
	  layer.msg("自定义回执保存失败: " + error);
	})
	
	return false;
  });
  
  //监听行工具事件
  table.on('tool(custom-msg-table)', function(obj){ //注：tool 是工具条事件名，test 是 table 原始容器的属性 lay-filter="对应的值"
	var data = obj.data //获得当前行数据
	,layEvent = obj.event; //获得 lay-event 对应的值
	if (layEvent == "delete") {
	  layer.confirm('确认要删除此行吗？内置语句删除后会重置。', function(index){
		layer.close(index);
		$.post("/api/custommsg", JSON.stringify({action: "reset", data: [obj.data]}))
		.done(function(data) {
		  if (data.code == 0) {
			obj.del();
			console.log("CustomMsg Delete Success");
		  } else {
			layer.msg("关键词回复删除失败: " + data.msg);
		  }
		})
		.fail(function(jqXHR, textStatus, error) {
		  layer.msg("关键词回复删除失败: " + error);
		})
	  });
	}
	else if (layEvent == "edit") {
	  editCustomMsgFormIndex = layer.open({
		type: 1, 
		title: '编辑自定义回执',
		content: $("#editCustomMsgForm").removeClass("layui-hide"), //这里content是一个普通的String
		success: function() {
		  $("#editCustomMsgForm").find("input[name='name']").val(obj.data.name);
		  $("#editCustomMsgForm").find("textarea[name='value']").val(obj.data.value);
		  $("#editCustomMsgForm").find("textarea[name='remark']").val(obj.data.remark);
		  $("#editCustomMsgForm").find("button").html("修改");
		  layui.form.render('select');
		},
		end: function() { $("#editCustomMsgForm").addClass("layui-hide"); }
	  });
	}
  });

  table.on('edit(custom-msg-table)', function(obj) { 
	obj.data.value = obj.data.value.replace(/<br>/g,"\n").replace(/\{br\}/g,"\n");
	$.post("/api/custommsg", JSON.stringify({action: "set", data: [obj.data]}))
	.done(function(data) {
	  if (data.code == 0) {
		layer.msg("回执" + obj.data.name + "保存成功√");
	  } else {
		layer.msg("自定义回执保存失败: " + data.msg);
	  }
	})
	.fail(function(jqXHR, textStatus, error) {
	  layer.msg("自定义回执保存失败: " + error);
	})
  });

  table.render({
	elem: '#admin-config-table'
	,height: 420
	,url: '/api/adminconfig' //数据接口
	,title: '管理员设置'
	,request: {} 
	,cols: [[ //表头
	  {field: 'name', title: '名称', width:150, sort: true, fixed: 'left'}
	  ,{field: 'value', title: '值', minWidth:100, edit: 'text'}
	  ,{field: 'remark', title: '说明', width:300, fixed: 'right'}
	]]
  });

  table.on('edit(admin-config-table)', function(obj) { 
	if (obj.data.value >>> 0 !== parseFloat(obj.data.value)) {
	  layer.msg("数据无效！值必须是整数");
	} else {
	  obj.data.value = obj.data.value >>> 0;
	  $.post("/api/adminconfig", JSON.stringify({action: "set", data: [obj.data]}))
	  .done(function(data) {
		if (data.code == 0) {
		  layer.msg("配置项" + obj.data.name + "保存成功√");
		} else {
		  layer.msg("设置保存失败: " + data.msg);
		}
	  })
	  .fail(function(jqXHR, textStatus, error) {
		layer.msg("设置保存失败: " + error);
	  })
	}

  });

  $.get("/api/master")
	.done(function(data) {
	  if (data.code == 0) {
		  $("#master").val(data.data.master);
		  if (data.data.mode == "private") {
			  $("input#public").attr('checked', false);
			  $("input#private").attr('checked', true);
			  form.render('radio');
		  }
	  }
	})

  form.on('submit(masterForm)', function(data){
	data.field.master = parseInt(data.field.master, 10);
	$.post("/api/master", JSON.stringify({action: "set", data: data.field}))
	  .done(function(data) {
		if (data.code == 0) {
		  layer.msg("Master设置保存成功");
		} else {
		  layer.msg("Master设置保存失败: " + data.msg);
		}
	  })
	  .fail(function(jqXHR, textStatus, error) {
		layer.msg("Master设置保存失败: " + error);
	  })
	return false;
  });

  //CustomReply
  table.render({
	elem: '#custom-reply-table'
	,height: 420
	,url: '/api/customreply' //数据接口
	,title: '关键词回复设置'
	,toolbar: "#addToolbar"
	,request: {}
	, overflow: 'tips'
	,cols: [[ //表头
	  {field: 'name', title: '名称', width:100, sort: true, fixed: 'left'}
	  ,{field: 'keyword', title: '关键词', width:150}
	  ,{field: 'type', title: '触发性质', width:90, align: 'center', edit: 'text'}
	  ,{field: 'mode', title: '匹配模式', width:90, align: 'center', edit: 'text'}
	  ,{field: 'limit', title: '触发限制', width:100, align: 'center', edit: 'text'}
	  ,{field: 'echo', title: '回复形式', width:90, align: 'center', edit: 'text'}
	  ,{field: 'answer', title: '回复', minWidth:250, edit: 'text'}
	  ,{fixed: 'right', width:60, align:'center', toolbar: '#editToolbar'}
	  ,{fixed: 'right', width:60, align:'center', toolbar: '#delToolbar'}
	]]
    , done: function () {
        soulTable.render(this)
    }
  });

  var addCustomReplyFormIndex = -1;
  table.on('toolbar(custom-reply-table)', function(obj){
	var checkStatus = table.checkStatus(obj.config.id);
	switch(obj.event){
	  case 'add':
		addCustomReplyFormIndex = layer.open({
		  type: 1, 
		  title: '添加关键词回复',
		  content: $("#addCustomReplyForm").removeClass("layui-hide"), //这里content是一个普通的String
		  end: function() { $("#addCustomReplyForm").addClass("layui-hide"); }
		});
		break;
	}
  });

  form.on('submit(addCustomReplyForm)', function(data){
	layer.close(addCustomReplyFormIndex);
    if (data.field.echo == "Deck") { data.field.answer = data.field.answer.split("|").map(s => s.trim());}
	$.post("/api/customreply", JSON.stringify({action: "set", data: [data.field]}))
	.done(function(data) {
	  if (data.code == 0) {
		layer.msg("关键词回复编辑成功");
		table.reload('custom-reply-table');
	  } else {
		layer.msg("关键词回复保存失败: " + data.msg);
	  }
	})
	.fail(function(jqXHR, textStatus, error) {
	  layer.msg("关键词回复保存失败: " + error);
	})
	
	return false;
  });

  table.on('tool(custom-reply-table)', function(obj){ //注：tool 是工具条事件名，test 是 table 原始容器的属性 lay-filter="对应的值"
	var data = obj.data //获得当前行数据
	,layEvent = obj.event; //获得 lay-event 对应的值
	if (layEvent == "delete") {
	  layer.confirm('确认要删除此行吗？此操作不可撤销。', function(index){
		layer.close(index);
		$.post("/api/customreply", JSON.stringify({action: "delete", data: [obj.data]}))
		.done(function(data) {
		  if (data.code == 0) {
			obj.del();
			console.log("CustomReply Delete Success");
		  } else {
			layer.msg("关键词回复删除失败: " + data.msg);
		  }
		})
		.fail(function(jqXHR, textStatus, error) {
		  layer.msg("关键词回复删除失败: " + error);
		})
	  });
	}
	else if (layEvent == "edit") {
	  addCustomReplyFormIndex = layer.open({
		type: 1, 
		title: '编辑关键词回复',
		content: $("#addCustomReplyForm").removeClass("layui-hide"), //这里content是一个普通的String
		success: function() {
		  $("#addCustomReplyForm").find("input[name='name']").val(obj.data.name);
		  $("#addCustomReplyForm").find("input[name='keyword']").val(obj.data.keyword);
		  $("#addCustomReplyForm").find("select[name='type']").val(obj.data.type);
		  $("#addCustomReplyForm").find("select[name='mode']").val(obj.data.mode);
		  $("#addCustomReplyForm").find("textarea[name='limit']").val(obj.data.limit);
		  $("#addCustomReplyForm").find("select[name='echo']").val(obj.data.echo);
		  $("#addCustomReplyForm").find("textarea[name='answer']").val(obj.data.answer);
		  $("#addCustomReplyForm").find("button").html("修改");
		  layui.form.render('select');
		},
		end: function() { $("#addCustomReplyForm").addClass("layui-hide"); }
	  });
	}
  });

  table.on('edit(custom-reply-table)', function(obj) { 
	obj.data.answer = obj.data.answer.replace(/<br>/g,"\n").replace(/\{br\}/g,"\n");
    if (obj.data.echo == "Deck") { obj.data.answer = obj.data.answer.split("|").map(s => s.trim());}
	$.post("/api/customreply", JSON.stringify({action: "set", data: [obj.data]}))
	.done(function(data) {
	  if (data.code == 0) {
		layer.msg("回复关键词" + obj.data.name + "保存成功√");
	  } else {
		layer.msg("关键词回复保存失败: " + data.msg);
	  }
	})
	.fail(function(jqXHR, textStatus, error) {
	  layer.msg("关键词回复保存失败: " + error);
	})
  });
  //Mod
  mod_list = {}
  table.render({
        elem: '#mod-local-table'
        , height: 420
        , url: '/api/mod/list' //数据接口
        , title: '本地模块列表'
        , request: {}
		, overflow: 'tips'
        , rowDrag: {/*trigger: 'row',*/ done: function(eve) {
            $.post("/api/mod/list", JSON.stringify({ action: "reorder", data: { oldIndex: eve.oldIndex, newIndex: eve.newIndex } }))
                .done(function (data) {
                    if (data.code == 0) {
                        layer.msg("Mod调序成功");
                    } else {
                        layer.msg("Mod调序失败: " + data.msg);
                    }
                })
                .fail(function (jqXHR, textStatus, error) {
                    layer.msg("Mod调序失败: " + error);
                })
            return false;
        }}
        , cols: [[ //表头
            { field: 'title', title: '模块', width: 140, align: 'center', fixed: 'left' },
            { field: 'ver', title: '版本', width: 100, align: 'center' },
            { field: 'author', title: '作者', width: 100, align: 'center' },
            { field: 'brief', title: '简介', minWidth: 200, overflow: 'tips'},
            { field: 'active', title: '开关', width: 80, align: 'center', templet: function (row) { mod_list[row.name]=true; return "<input type='checkbox' lay-skin='switch' lay-filter='modSwitch' lay-text='开|关' value=" + row.LAY_TABLE_INDEX + " mod='" + row.name + "'" + (row.active ? " checked >" : ">")}},
            { title: '卸载', fixed: 'right', width: 60, align: 'center', toolbar: '#delToolbar' }
        ]]
        , done: function () {
            soulTable.render(this)
        }
  });
    form.on('switch(modSwitch)', function (eve) {
        $.post("/api/mod/list", JSON.stringify({ action: "switch", data: parseInt(eve.value) }))
            .done(function (data) {
                if (data.code == 0) {
					layer.msg("Mod开关成功");
                } else {
                    layer.msg("Mod开关失败: " + data.msg);
                }
            })
            .fail(function (jqXHR, textStatus, error) {
                layer.msg("Mod开关失败: " + error);
            })
        return false;
    });
    table.on('tool(mod-local-table)', function (obj) { //注：tool 是工具条事件名，test 是 table 原始容器的属性 lay-filter="对应的值"
        var data = obj.data //获得当前行数据
            , layEvent = obj.event; //获得 lay-event 对应的值
        if (layEvent == "delete") {
            layer.confirm('确认卸载「' + data.title +'」吗？此操作不可撤销。', function (index) {
                layer.close(index);
                $.post("/api/mod/list", JSON.stringify({ action: "delete", data: [data] }))
                    .done(function (data) {
                        if (data.code == 0) {
                            obj.del();
                            console.log("Mod Uninstall Success");
                        } else {
                            layer.msg("模块卸载失败: " + data.msg);
                        }
                    })
                    .fail(function (jqXHR, textStatus, error) {
                        layer.msg("卸载「" + data.title +"」失败: " + error);
                    })
            });
        }
    });
  function get_mod_source(url){
	table.render({
        elem: '#mod-source-table'
        , height: 420
        , url:  '/api/url?url=' + url //数据接口
        , title: '远程模块资源'
        , request: {}
		, overflow: 'tips'
        , cols: [[ //表头
            { field: 'title', title: '模块', width: 140, align: 'center', fixed: 'left' },
            { field: 'ver', title: '版本', width: 100, align: 'center' },
            { field: 'author', title: '作者', width: 100, align: 'center' },
            { field: 'brief', title: '简介', minWidth: 200 },
            { field: 'dice_build', title: 'Dice要求', width: 80, align: 'center', filter: true },
            { field: 'require', title: '前置', width: 60, align: 'center', templet: function (row) { return row.require ? row.require.join('|') :"无" } },
            { title: '安装', fixed: 'right', width: 60, align: 'center', templet: function (row) { return mod_list[row.name]?"<button class='layui-btn layui-btn-xs layui-btn-warm' lay-event='add'>重装</button>":"<button class='layui-btn layui-btn-xs' lay-event='add'>安装</button>" } }
        ]]
        , done: function () {
            soulTable.render(this)
        }
  });
  }
  get_mod_source($("#mod-source-url").val());
	form.on('submit(mod-source-get)', function (data) {
		get_mod_source($("#mod-source-url").val());
		return false;
  });

    table.on('tool(mod-source-table)', function (obj) { //注：tool 是工具条事件名，test 是 table 原始容器的属性 lay-filter="对应的值"
        var row = obj.data //获得当前行数据
            , layEvent = obj.event; //获得 lay-event 对应的值
        if (layEvent == "add") {
            layer.confirm('确认安装「' + row.title + '」吗？', function (index) {
                layer.close(index);
                $.post("/api/mod/list", JSON.stringify({ action: "install", data: row }))
                    .done(function (data) {
                        if (data.code == 0) {
                            table.reload('mod-source-table');
                            layer.msg("安装「" + row.title + "」成功√ ");
                        } else {
                            layer.msg("模块安装失败: " + data.msg);
                        }
                    })
                    .fail(function (jqXHR, textStatus, error) {
                        layer.msg("安装「" + row.title +"」失败: " + error);
                    })
            });
        }
    });


  form.on('submit(passwordForm)', function(data){
	$.post("/api/webuipassword", JSON.stringify({action: "set", data: data.field}))
	.done(function(data) {
	  if (data.code == 0) {
		layer.msg("密码更改成功");
		location.reload();
	  } else {
		layer.msg("密码更改失败: " + data.msg);
	  }
	})
	.fail(function(jqXHR, textStatus, error) {
	  layer.msg("密码更改失败: " + error);
	})
	
	return false;
  });

  form.verify({
	// TODO: Better verification
	pass: [
	  /^[\S]{6,20}$/
	  ,'密码必须6到20位，且不能出现空格'
	],
	passsame: function(value, item) {
	  if ($(item).parent().children("#password").val() != value) {
		return "两次输入的密码不一致";
	  }
	},
	regex: function(value, item) {
	  try {
		new RegExp(value);
	  } catch(error) {
		return '正则表达式无效';
	  }
	}
  });
});
</script>
</body>
</html>